// 导出login
const express = require('express')
const jwt = require('jsonwebtoken')

const user = require('../db/user')
// toekn验证规则，解密token需要
let { secret } = require('../constant')
// 创建路由容器
const login = express.Router()
// 挂载路由
// 登录，提交邮箱和密码后经过比对
// 如果查找不到用户名，用户名错误
// 如果密码不对，则用户名或者密码错误
// 用户名和密码都正确的话就生成并存储token
login.post('/login', function (req, res) {
    user.findOneByUsername(req.body).then(data => {
        // data是一个数组如果查到用户名了，就说明数组长度不为0
        if (data.length == 0) {
            // 说明查找不到该用户名
            return res.json({ code: 0, data: null, msg: '用户名错误！' })
        } else {
            // 说明查找到该用户名了，进行密码对比，如果密码错误就返回密码错误，否则登录成功
            if (data[0].password == req.body.password) {
                // 登录成功的话生成token并返回
                const token = jwt.sign(
                    { username: data.username, id: data.id },
                    secret,
                    {
                        expiresIn: '72h',
                    }
                ) // 生成 JWT
                return res.json({
                    code: 1,
                    msg: '登录成功！',
                    token,
                    username: data[0].username,
                    count: data[0].count,
                })
            } else {
                return res.json({ code: 2, msg: '密码错误，登录失败！' })
            }
        }
    })
})
module.exports = login
